<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
        function Person(name,age)
        {
            this.name=name;
            this.age=age;
        }
        Person.prototype.setName=function(name)
        {
            this.name=name;
        };

        function Student(name,age,price)
        {
            Person.call(this,name,age);//相当于：this.Person(name,age);
            /*
            this.name=name;
            this.age=age;
            */
           this.price=price;
        }
        //进行关系链接，Student()函数的原型函数=Person()的实例对象
        Student.prototype =new Person();//为了能看到父类型的方法
        Student.prototype.constructor =Student;//修正constructor属性

        Student.prototype.setPrice=function(price)
        {
            this.price=price;
        };

        var s=new Student("Tom",21,10086);
        console.log(s);
        //可以在控制台中看到s对象已经有了setName()和setPrice()两个方法
        s.setName("Jack");
        s.setPrice(20172);
        console.log(s);
    </script>
</head>
<body>
    <!--
        方式3：原型链+借用构造函数的组合继承
        1.利用原型链实现对父类型对象的方法继承
        2.利用call()借用父类型构建函数初始化相同属性
    -->
</body>
</html>